Методи пошуку у масивах

Інформація про навчальний заклад

ВУЗ:
Національний технічний університет України Київський політехнічний інститут
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2022
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Програмування складних алгоритмів

Частина тексту файла

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» ЗВІТ до лабораторної роботи № 4 з дисципліни «Програмування складних алгоритмів» Тема «Методи пошуку у масивах» Варіант № 24 Дата «5» травня 2022 Мета роботи: Метою лабораторної роботи є отримання практичних навичок в обробці масивів, у пошуку елементів масивів різними методами. Дослідження і вивчення методів пошуку ключових елементів у масивах. Здійснення порівняння та аналізу ефективності використовуваних . Завдання до роботи Методичні вказівки Лабораторна робота спирається на знання й уміння, отримані при вивченні наступних питань лекції: – Пошук – знаходження будь-якої конкретної інформації у великому обсязі раніше зібраних даних. Дані діляться на записи, і кожний запис має хоча б один ключ. Ключ використовується для того, щоб відрізнити один запис від іншого. Метою пошуку є знаходження всіх записів, що підходять до заданого ключа пошуку. – Пошук елементу в масиві (послідовний пошук – неупорядкованої інформації, але також можна використовувати його й на відсортованих даних) – Двійковий пошук (Бінарний пошук) – Пошук послідовності елементів в масиві. – Алгоритм Рабіна-Карпа Завдання до лабораторної роботи: 1. Знайти заданий елемент у невпорядкованому масиві (не менше 10х10) за допомогою методу пошуку з бар’єром. 2. Знайти заданий елемент у впорядкованому масиві згідно варіантів за таким принципом Завдання / 1.2. Теоретичні відомості Задача пошуку елемента в послідовності - одна з важливих задач програмування як з теоретичної, так і практичної точок зору. Ось її формулювання: Нехай A = {a1, a2, ...} - послідовність однотипних елементів і b - деякий елемент, який володіє властивістю P. Знайти місце елемента b в послідовності А. Оскільки представлення послідовності в пам’яті може бути здійснено в виді масиву, задачі можуть бути уточнені як задачі пошуку елемента в масиві A: Знайти максимальний елемент масиву; Знайти даний елемент масиву; Знайти k-тий за величиною елемент масиву; Основні алгоритми пошуку елементів в масиві: Лінійний пошук Ідея : Проглядати почергово елементи масиву, доки не буде знайдено шуканий елемент або не убде досягнуто кінець масиву.       Код ф-ції:  //Передаємо масив, ключ, розмір масиву int linSearch(int arr[], int Key, int arrSize){  for (int i = 0; i < arrSize; i++){ //Шукаємо елемент    if (arr[i] == requiredKey)     return i; //Якщо знайшли  }  return -1; //Якщо елемент не знайшли } Лінійний пошук з бар'єром Ідея : Як і у попередньому випадку, алементи проглядаються по черзі, але для зменшення кількості порівнянь після останнього елемента додається елемент з ключем, що дорівнює шуканому значенню.       Код ф-ції:  //Передаємо масив, ключ, розмір масиву int find(int *arr, int size, int key) {   int last = arr[size - 1]; //Зберігаємо останій елемент масива   arr[size - 1] = key;//Гарантуємо , що значення є в масиві     int i = 0;   for (i = 0; arr[i] != value; ++i) {//Шукаємо індекс елемента   }   arr[size - 1] = last;//Відновлюємо останій елемент   if (i != (size - 1) || value == last) {//Не дійшли до бар'єра або останій елемент був шуканим    return i; //Знайшли елемент   }else{     return -1; //Не знайшли елемент   } } Бінарний пошук Ідея : Пошук реалізується в упорядкованому масиві. Шукане значення слід порівняти з ключем середнього елементу, у результаті цього порівняння визначити, у якій половині масиву знаходиться шуканий ключ, і знову застосувати ту саму процедуру до половини масиву. Процес припиняється, коли буде знайдено елемент, або коли "довжина" таблиці стане менше 1. Код ф-ції: //Передаємо масив, ліву та праву границ, ключ int Search_Binary (int arr[], int left, int right, int key){  int midd = 0;  while (1){  midd = (left + right) / 2; // Середній елемент  if (key < arr[midd])       //Якщо ключ менше середьного значення  right = midd - 1;      // зменшуєм праву границю  else if (key > arr[midd])  //Якщо ключ більше середь...
Антиботан аватар за замовчуванням

11.05.2023 07:05

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини